﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AcadPos.Entity;
using AcadPosApp.Utilidades;
using System.Data;
using Microsoft.Reporting.WebForms;

namespace AcadPosApp.Cadastros
{
    public partial class CadastroMatrizCurricular : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregaAreasConhecimento();
                pnlPesquisa.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultar.ClientID + "')");
                pnlCadastro.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConfirmar.ClientID + "')");
                txtCadPesqDisciplinas.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultarDisciplinas.ClientID + "')");
            }
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            carregaGridPesquisa();
            ddlCurriculoPesquisa.Enabled = false;
            ddlCurriculoPesquisa.Items.Clear();
            //pnlPesquisaModuloCurriculo.Visible = false;
            pnlPesquisaDisciplinas.Visible = false;
            pnlImpressao.Visible = false;            
        }

        private void carregaGridPesquisa()
        {
            gvwPesquisa.Visible = true;
            Curso curso = new Curso();
            curso.Descricao = txtPesquisa.Text;
            curso.IdAreaConhecimento = Convert.ToInt32(ddlAreaConhecimento.SelectedValue);
            gvwPesquisa.DataSource = ControlClass.CNCurso.listarCursos(curso);
            gvwPesquisa.DataBind();
            gvwPesquisa.SelectedIndex = -1;
        }

        private void carregaAreasConhecimento()
        {
            AreaConhecimento area = new AreaConhecimento();
            area.Descricao = string.Empty;
            ddlAreaConhecimento.DataSource = ControlClass.CNAreaConhecimento.listarAreaConhecimento(area);
            ddlAreaConhecimento.DataTextField = "DESCRICAO";
            ddlAreaConhecimento.DataValueField = "ID_AREA_CONHECIMENTO";
            ddlAreaConhecimento.DataBind();
        }

        private void carregaAreasConhecimentoCadastro()
        {
            //AreaConhecimento area = new AreaConhecimento();
            //area.Descricao = string.Empty;
            //ddlCadAreaConhecimento.DataSource = ControlClass.CNAreaConhecimento.listarAreaConhecimento(area);
            //ddlCadAreaConhecimento.DataTextField = "DESCRICAO";
            //ddlCadAreaConhecimento.DataValueField = "ID_AREA_CONHECIMENTO";
            //ddlCadAreaConhecimento.DataBind();
        }

        protected void gvwPesquisa_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisa.PageIndex = e.NewPageIndex;
            carregaGridPesquisa();
        }

        protected void gvwPesquisa_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[4].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[4].Text.Trim()) == "A")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/inativo.png";
                e.Row.Cells[4].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[4].Visible = false;
            }
            #endregion
        }

        protected void ddlAreaConhecimento_SelectedIndexChanged(object sender, EventArgs e)
        {
            gvwPesquisa.Visible = false;
            ddlCurriculoPesquisa.Enabled = false;
            ddlCurriculoPesquisa.Items.Clear();
            //pnlPesquisaModuloCurriculo.Visible = false;
            pnlPesquisaDisciplinas.Visible = false;
            ddlModuloPesquisa.Items.Clear();
            ddlModuloPesquisa.Enabled = false;
            pnlImpressao.Visible = false;            
        }

        protected void btnInserir_Click(object sender, EventArgs e)
        {
            if (gvwPesquisa.SelectedIndex > -1 && ddlCurriculoPesquisa.SelectedValue != "" && ddlModuloPesquisa.SelectedValue != "")
            {
                btnConfirmar.CommandName = "Inserir";
                pnlCadastro.Visible = true;
                pnlPesquisa.Enabled = false;
                pnlPesquisaDisciplinas.Enabled = false;
                gvwDisciplinasCadastro.Visible = false;
            }
            else
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Selecione para inserir um currículo e curso!")), true);
            }
        }

        protected void gvwPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaCurriculosCurso();
            //pnlPesquisaModuloCurriculo.Visible = false;
            pnlPesquisaDisciplinas.Visible = false;
            ddlModuloPesquisa.Items.Clear();
            ddlModuloPesquisa.Enabled = false;
        }

        private void carregaCurriculosCurso()
        {
            ddlCurriculoPesquisa.Enabled = true;
            ddlCurriculoPesquisa.Items.Clear();
            Curriculo curriculo = new Curriculo();
            curriculo.IdCurso = Convert.ToInt32(gvwPesquisa.SelectedValue);
            DataTable dt = ControlClass.CNCurriculo.listaCurriculoPorCurso(curriculo);
            ddlCurriculoPesquisa.DataSource = dt;
            ddlCurriculoPesquisa.DataTextField = "COD_CURRICULO_SITUACAO";
            ddlCurriculoPesquisa.DataValueField = "ID_CURRICULO";
            ddlCurriculoPesquisa.DataBind();
            ddlCurriculoPesquisa.Items.Insert(0, new ListItem("Selecione", ""));
            if (dt.Rows.Count <= 0)
            {
                ddlCurriculoPesquisa.Enabled = false;
                ddlCurriculoPesquisa.Items.Clear();
            }
        }

        protected void ddlCurriculoPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaModulosCurriculo();
            pnlImpressao.Visible = true;            
        }

        private void carregaModulosCurriculo()
        {
            if (gvwPesquisa.SelectedIndex > -1 && ddlCurriculoPesquisa.SelectedValue != "")
            {
                //pnlPesquisaModuloCurriculo.Visible = false;
                pnlPesquisaDisciplinas.Visible = false;
                ddlModuloPesquisa.Enabled = true;
                ModuloCurriculo moduloCurriculo = new ModuloCurriculo();
                moduloCurriculo.IdCurriculo = Convert.ToInt32(ddlCurriculoPesquisa.SelectedValue);
                DataTable dt = ControlClass.CNModuloCurriculo.listaModulosCurriculo(moduloCurriculo);
                ddlModuloPesquisa.DataSource = dt;
                ddlModuloPesquisa.DataTextField = "MODULO_SITUACAO";
                ddlModuloPesquisa.DataValueField = "ID_MODULO_CURRICULO";
                ddlModuloPesquisa.DataBind();
                if (dt.Rows.Count <= 0)
                {
                    ddlModuloPesquisa.Enabled = false;
                    ddlModuloPesquisa.Items.Clear();
                    ddlModuloPesquisa.Enabled = false;
                }
            }
            else
            {
                //ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Selecione um curso para inserir um currículo e/ou curso!")), true);
                ddlModuloPesquisa.Items.Clear();
                ddlModuloPesquisa.Enabled = false;
            }
        }

        protected void btnConsultarDisciplinas_Click(object sender, EventArgs e)
        {
            carregaDisciplinasModulo();
        }

        private void carregaDisciplinasModulo()
        {
            if (gvwPesquisa.SelectedIndex > -1 && ddlCurriculoPesquisa.SelectedValue != "" && ddlModuloPesquisa.SelectedValue != "")
            {
                pnlPesquisaDisciplinas.Visible = true;
                MatrizCurricular matriz = new MatrizCurricular();
                matriz.IdModuloCurriculo = Convert.ToInt32(ddlModuloPesquisa.SelectedValue);
                gvwPesquisaDisciplinas.DataSource = ControlClass.CNMatrizCurricular.listarDisciplinasModuloCurriculo(matriz);
                gvwPesquisaDisciplinas.DataBind();
                gvwPesquisaDisciplinas.SelectedIndex = -1;
            }
            else
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Selecione um curso para inserir um currículo/módulo!")), true);
            }
        }

        protected void ddlModuloPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            pnlPesquisaDisciplinas.Visible = false;

        }

        protected void gvwPesquisaDisciplinas_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisaDisciplinas.PageIndex = e.NewPageIndex;
            carregaDisciplinasModulo();
        }

        protected void gvwPesquisaDisciplinas_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                MatrizCurricular matriz = new MatrizCurricular();
                int index = int.Parse((String)e.CommandArgument);
                matriz.IdMatrizCurricular = Convert.ToInt32(gvwPesquisaDisciplinas.DataKeys[index]["ID_MATRIZ_CURRICULAR"].ToString());
                matriz = ControlClass.CNMatrizCurricular.listarDisciplinasModuloCurriculoObj(matriz);
                string usuario = User.Identity.Name;

                if (e.CommandName == "Alterar")
                {
                    pnlCadastro.Visible = true;
                    pnlPesquisa.Enabled = false;
                    pnlPesquisaDisciplinas.Enabled = false;
                    txtOrdemMinistracao.Text = matriz.OrdemMinistracao.ToString();
                    txtCargaHoraria.Text = matriz.CargaHorarioDisc.ToString();
                    txtEmentaProjeto.Text = matriz.EmentaProjeto.ToString();
                    txtEmentaExecucao.Text = matriz.EmentaExecucao.ToString();
                    txtReferenciasBibliograficas.Text = matriz.ReferenciaBibliografica.ToString();

                    Disciplina disciplina = new Disciplina();
                    disciplina.IdDisciplina = Convert.ToInt32(gvwPesquisaDisciplinas.DataKeys[index]["ID_DISCIPLINA"].ToString());
                    disciplina.Descricao = "";
                    DataTable dtDisciplinas = ControlClass.CNDisciplina.listarDisciplina(disciplina);
                    gvwDisciplinasCadastro.DataSource = dtDisciplinas;
                    gvwDisciplinasCadastro.DataBind();
                    gvwDisciplinasCadastro.SelectedIndex = 0;
                    txtCadPesqDisciplinas.Text = matriz.DescricaoDisciplina.ToString();

                    ViewState["ID_MATRIZ_CURRICULAR"] = matriz.IdMatrizCurricular.ToString();
                    btnConfirmar.CommandName = "Alterar";
                }
                else if (e.CommandName == "Excluir")
                {
                    pnlCadastro.Visible = false;
                    if (ControlClass.CNMatrizCurricular.excluir(matriz, usuario))
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoExcluir, "")), true);
                        pnlCadastro.Visible = false;
                        pnlPesquisa.Enabled = true;
                        carregaDisciplinasModulo();
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Não foi possível realizar a operação. Por favor, tente novamente.")), true);
                    }
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("FK_TB_MATRIZ_CURRICULAR_TB_DISCIPLINA"))
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.ErroChaveEstrangeira, "")), true);
                else
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                pnlCadastro.Visible = false;
                pnlPesquisa.Enabled = true;
            }
        }

        protected void gvwPesquisaDisciplinas_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton l = (ImageButton)e.Row.FindControl("EXCLUIR");
                l.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton button2 = (ImageButton)e.Row.FindControl("ImgAlterar");
                button2.CommandArgument = e.Row.RowIndex.ToString();
            }
        }

        protected void gvwPesquisaDisciplinas_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Excluir")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja excluir?', '" + button.ClientID + "');";
                        }
                    }
                }
            }
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {

                MatrizCurricular matriz = new MatrizCurricular();
                matriz.IdModuloCurriculo = Convert.ToInt32(ddlModuloPesquisa.SelectedValue);
                matriz.IdDisciplina = Convert.ToInt32(gvwDisciplinasCadastro.SelectedValue);
                matriz.OrdemMinistracao = Convert.ToInt32(txtOrdemMinistracao.Text);
                matriz.CargaHorarioDisc = Convert.ToInt32(txtCargaHoraria.Text);
                matriz.EmentaProjeto = txtEmentaProjeto.Text;
                matriz.EmentaExecucao = txtEmentaExecucao.Text;
                matriz.ReferenciaBibliografica = txtReferenciasBibliograficas.Text;
                string usuario = User.Identity.Name;

                if (matriz.IdDisciplina > 0)
                {

                    if (btnConfirmar.CommandName == "Inserir")
                    {
                        if (ControlClass.CNMatrizCurricular.inserir(matriz, usuario))
                        {
                            finalizaOperacao();
                            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoInserir, "")), true);
                            carregaDisciplinasModulo();
                            pnlPesquisaDisciplinas.Enabled = true;
                        }
                    }

                    else if (btnConfirmar.CommandName == "Alterar")
                    {
                        matriz.IdMatrizCurricular = Convert.ToInt32(ViewState["ID_MATRIZ_CURRICULAR"].ToString());
                        if (ControlClass.CNMatrizCurricular.alterar(matriz, usuario))
                        {
                            finalizaOperacao();
                            pnlPesquisa.Enabled = true;
                            carregaDisciplinasModulo();
                            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoAlterar, "")), true);
                            pnlPesquisaDisciplinas.Enabled = true;
                        }
                    }
                }
                else
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Selecione uma disciplina!")), true);
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("IX_TB_MATRIZ_CURRICULAR"))
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Essa disciplina já foi inserida para esse módulo!")), true);
                //else if (ex.Message.Contains("IX_MATRIZ_CURRICULAR_ORDEM"))
                //    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Essa ordem já foi inserida para esse módulo!")), true);
                else
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, ex.Message.ToString())), true);
            }
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            pnlPesquisaDisciplinas.Enabled = true;
            TrustX.Util.UtilForm.LimparCampos(pnlCadastro);
            pnlCadastro.Visible = false;
            pnlPesquisa.Enabled = true;            
        }

        protected void btnConsultarDisciplinasCadastro_Click(object sender, EventArgs e)
        {
            carregaDisciplinasCadastro();
        }

        private void carregaDisciplinasCadastro()
        {
            gvwDisciplinasCadastro.Visible = true;
            Disciplina disciplina = new Disciplina();
            disciplina.Descricao = txtCadPesqDisciplinas.Text;
            gvwDisciplinasCadastro.DataSource = ControlClass.CNDisciplina.listarDisciplina(disciplina);
            gvwDisciplinasCadastro.DataBind();
            gvwDisciplinasCadastro.SelectedIndex = -1;
        }

        protected void gvwDisciplinasCadastro_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwDisciplinasCadastro.PageIndex = e.NewPageIndex;
            carregaDisciplinasCadastro();
        }

        private void finalizaOperacao()
        {
            TrustX.Util.UtilForm.LimparCampos(pnlCadastro);
            pnlCadastro.Visible = false;
            pnlPesquisa.Enabled = true;
        }

        protected void btnImprimirMatriz_Click(object sender, EventArgs e)
        {
            gerarRelMatrizCurricular();

        }

        private void gerarRelMatrizCurricular()
        {
            try
            {
                int pCurso = Convert.ToInt32(gvwPesquisa.SelectedDataKey["ID_CURSO"]);
                int pCurriculo = Convert.ToInt32(ddlCurriculoPesquisa.SelectedValue);
                int pAreaConhecimento = Convert.ToInt32(ddlAreaConhecimento.SelectedValue);
                DataTable dtImp = ControlClass.CNMatrizCurricular.getRelMatrizCurricular(pCurso, pCurriculo, pAreaConhecimento);
                if (dtImp.Rows.Count == 0)
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('Não há registros à serem impressos!', function() {});", true);
                }
                else
                {

                    ReportViewer ReportViewer1 = new ReportViewer();
                    ReportViewer1.Reset();
                    ReportViewer1.ProcessingMode = ProcessingMode.Local;
                    ReportViewer1.LocalReport.ReportPath = Server.MapPath(@"~/Relatorios/relMatrizCurricular.rdlc");
                    ReportViewer1.LocalReport.DataSources.Clear();

                    ReportParameter rp_curso = new ReportParameter("rp_curso", Server.HtmlDecode(gvwPesquisa.SelectedRow.Cells[2].Text));
                    ReportParameter rp_area = new ReportParameter("rp_area", ddlAreaConhecimento.SelectedItem.Text);
                    ReportParameter rp_curriculo = new ReportParameter("rp_curriculo", ddlCurriculoPesquisa.SelectedItem.Text);

                    ReportParameter[] ReportParans = new ReportParameter[] { rp_curso, rp_area, rp_curriculo };

                    ReportViewer1.LocalReport.SetParameters(ReportParans);


                    ReportDataSource rds1 = new ReportDataSource();
                    rds1.Name = "DataSet1";
                    rds1.Value = dtImp;

                    ReportDataSource rds2 = new ReportDataSource();
                    rds2.Name = "DataSet2";
                    rds2.Value = ControlClass.CNParametros.getCabecalhoRelatorio();


                    ReportViewer1.LocalReport.DataSources.Add(rds1);
                    ReportViewer1.LocalReport.DataSources.Add(rds2);
                    ReportViewer1.LocalReport.Refresh();

                    #region Gerar PDF
                    Warning[] warn = null;
                    string[] streamids = null;
                    string mimeType = "application/pdf";
                    string encoding = string.Empty;
                    string extension = string.Empty;
                    byte[] byteViewer;

                    byteViewer = ReportViewer1.LocalReport.Render("pdf", null, out mimeType, out encoding, out extension, out streamids, out warn);
                    Response.Buffer = true;
                    Response.Clear();
                    Response.ContentType = "application/pdf";
                    Response.AddHeader("content-disposition", "attachment; filename=MatrizCurricular.pdf");
                    Response.BinaryWrite(byteViewer);
                    Response.Flush();

                    Response.End();
                    Response.ClearContent();
                    #endregion
                }
            }
            catch (Exception)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('Falha ao tentar gerar o relatório. Tente novamente!', function() {});", true);
            }
        }

        private void gerarRelEmenta(string pTipo)
        {
            try
            {
                int pCurso = Convert.ToInt32(gvwPesquisa.SelectedDataKey["ID_CURSO"]);
                int pCurriculo = Convert.ToInt32(ddlCurriculoPesquisa.SelectedValue);
                int pAreaConhecimento = Convert.ToInt32(ddlAreaConhecimento.SelectedValue);
                DataTable dtImp = ControlClass.CNMatrizCurricular.getRelMatrizCurricular(pCurso, pCurriculo, pAreaConhecimento);
                if (dtImp.Rows.Count == 0)
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('Não há registros à serem impressos!', function() {});", true);
                }
                else
                {
                    ReportViewer ReportViewer1 = new ReportViewer();
                    ReportViewer1.Reset();
                    ReportViewer1.ProcessingMode = ProcessingMode.Local;
                    if (pTipo == "Completo")
                        ReportViewer1.LocalReport.ReportPath = Server.MapPath(@"~/Relatorios/relEmentas.rdlc");
                    else if (pTipo == "Simples")
                        ReportViewer1.LocalReport.ReportPath = Server.MapPath(@"~/Relatorios/relEmentasSimples.rdlc");
                    ReportViewer1.LocalReport.DataSources.Clear();

                    ReportParameter rp_curso = new ReportParameter("rp_curso", Server.HtmlDecode(gvwPesquisa.SelectedRow.Cells[2].Text));
                    ReportParameter rp_area = new ReportParameter("rp_area", ddlAreaConhecimento.SelectedItem.Text);
                    ReportParameter rp_curriculo = new ReportParameter("rp_curriculo", ddlCurriculoPesquisa.SelectedItem.Text);

                    ReportParameter[] ReportParans = new ReportParameter[] { rp_curso, rp_area, rp_curriculo };

                    ReportViewer1.LocalReport.SetParameters(ReportParans);

                    ReportDataSource rds1 = new ReportDataSource();
                    rds1.Name = "DataSet1";
                    rds1.Value = dtImp;

                    ReportDataSource rds2 = new ReportDataSource();
                    rds2.Name = "DataSet2";
                    rds2.Value = ControlClass.CNParametros.getCabecalhoRelatorio();

                    ReportViewer1.LocalReport.DataSources.Clear();
                    ReportViewer1.LocalReport.DataSources.Add(rds1);
                    ReportViewer1.LocalReport.DataSources.Add(rds2);
                    ReportViewer1.LocalReport.Refresh();

                    #region Gerar PDF
                    Warning[] warn = null;
                    string[] streamids = null;
                    string mimeType = "application/pdf";
                    string encoding = string.Empty;
                    string extension = string.Empty;
                    byte[] byteViewer;

                    byteViewer = ReportViewer1.LocalReport.Render("pdf", null, out mimeType, out encoding, out extension, out streamids, out warn);
                    Response.Buffer = true;
                    Response.Clear();
                    Response.ContentType = "application/pdf";
                    Response.AddHeader("content-disposition", "attachment; filename=Ementa.pdf");
                    Response.BinaryWrite(byteViewer);
                    Response.Flush();

                    Response.End();
                    Response.ClearContent();
                    #endregion
                }
            }
            catch (Exception)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('Falha ao tentar gerar o relatório. Tente novamente!', function() {});", true);
            }
        }

        protected void btnImprimirEmenta_Click(object sender, EventArgs e)
        {

        }

        protected void ImgImprimir_Click(object sender, ImageClickEventArgs e)
        {
            if (rblTipoRel.SelectedValue == "Matriz Curricular")
            {
                gerarRelMatrizCurricular();
            }
            else if (rblTipoRel.SelectedValue == "Ementas Completo")
            {
                gerarRelEmenta("Completo");
            }
            else if (rblTipoRel.SelectedValue == "Ementas Simples")
            {
                gerarRelEmenta("Simples");
            }
        }
    }
}